package com.shopping.dev.service;

import com.shopping.dev.pojo.Items;
import com.shopping.dev.pojo.ItemsImg;
import com.shopping.dev.pojo.ItemsParam;
import com.shopping.dev.pojo.ItemsSpec;
import com.shopping.dev.vo.CommentLevelCountsVO;
import com.shopping.dev.vo.PagedGridResult;
import com.shopping.dev.vo.ShopCartVO;

import java.util.List;

public interface ItemsService {
    /**
     * 查询商品
     * @param itemId
     * @return
     */
    public Items queryItemById(String itemId);

    /**
     * 查询商品图片
     * @param itemId
     * @return
     */
    public List<ItemsImg> queryItemImgById(String itemId);

    /**
     * 查询商品规格
     * @param itemId
     * @return
     */
    public ItemsSpec queryItemsSpecById(String itemId);

    /**
     * 查询商品属性
     * @param itemId
     * @return
     */
    public List<ItemsParam> queryItemsParamById(String itemId);

    /**
     * 按照评论等级查询商品评论的数量
     * @param itemId
     * @param level
     * @return
     */
    public CommentLevelCountsVO queryCommentLevel(String itemId, Integer level);

    /**
     * 查询商品的评价
     * @param itemId
     * @param level
     * @param page
     * @param pageSize
     * @return
     */
    public PagedGridResult queryComments(String itemId, Integer level, Integer page, Integer pageSize);

    /**
     * 商品搜素
     * @param keywords
     * @param sort
     * @param page
     * @param pageSize
     * @return
     */
    PagedGridResult searchItems(String keywords, String sort, Integer page, Integer pageSize);

    /**
     * 根据第三分类查询商品
     * @param catId
     * @param sort
     * @param page
     * @param pageSize
     * @return
     */
    PagedGridResult searchItemsThirdByCatId(Integer catId, String sort, Integer page, Integer pageSize);

    /**
     * 根据规格id，查询出商品信息
     * @param itemSpecIds
     * @return
     */
    List<ShopCartVO> queryItemsBySpecIds(String itemSpecIds);

    List<ItemsSpec> queryItemsSpecList(String itemId);

    /**
     * 查询商品主图
     * @param itemId
     * @return
     */
    String queryItemMainImgById(String itemId);

    void decreaseItemSpecStock(String specid, Integer buyCounts);
}
